# -*- coding: utf-8 -*-  
'''
词性标注相关字典

词性集合：
    Ag 形语素 形容词性语素。形容词代码为a，语素代码ｇ前面置以A。
    a 形容词 取英语形容词adjective的第1个字母。 
    ad 副形词 直接作状语的形容词。形容词代码a和副词代码d并在一起。 
    an 名形词 具有名词功能的形容词。形容词代码a和名词代码n并在一起。 
    b 区别词 取汉字“别”的声母。 
    c 连词 取英语连词conjunction的第1个字母。 
    Dg 副语素 副词性语素。副词代码为d，语素代码ｇ前面置以D。 
    d 副词 取adverb的第2个字母，因其第1个字母已用于形容词。 
    e 叹词 取英语叹词exclamation的第1个字母。 
    f 方位词 取汉字“方” 
    g 语素 绝大多数语素都能作为合成词的“词根”，取汉字“根”的声母。 
    h 前接成分 取英语head的第1个字母。 
    i 成语 取英语成语idiom的第1个字母。 
    j 简称略语 取汉字“简”的声母。 
    k 后接成分 
    l 习用语 习用语尚未成为成语，有点“临时性”，取“临”的声母。 
    m 数词 取英语numeral的第3个字母，n，u已有他用。 
    Ng 名语素 名词性语素。名词代码为n，语素代码ｇ前面置以N。 
    n 名词 取英语名词noun的第1个字母。 
    nr 人名 名词代码n和“人(ren)”的声母并在一起。 
    nw 文字名 书名、电影名、论文名等
    ns 地名 名词代码n和处所词代码s并在一起。 
    nt 机构团体 “团”的声母为t，名词代码n和t并在一起。 
    nz 其他专名 “专”的声母的第1个字母为z，名词代码n和z并在一起。 
    o 拟声词 取英语拟声词onomatopoeia的第1个字母。 
    p 介词 取英语介词prepositional的第1个字母。 
    q 量词 取英语quantit的第1个字母。 
    r 代词 取英语代词pronoun的第2个字母,因p已用于介词。 
    s 处所词 取英语space的第1个字母。 
    Tg 时语素 时间词性语素。时间词代码为t,在语素的代码g前面置以T。 
    t 时间词 取英语time的第1个字母。 
    u 助词 取英语助词auxiliary 
    Vg 动语素 动词性语素。动词代码为v。在语素的代码g前面置以V。 
    v 动词 取英语动词verb的第一个字母。 
    vd 副动词 直接作状语的动词。动词和副词的代码并在一起。 
    vn 名动词 指具有名词功能的动词。动词和名词的代码并在一起。 
    w 标点符号 
    x 非语素字 非语素字只是一个符号，字母x通常用于代表未知数、符号。 
    xc 虚字垫子 了、撒、思密达等
    y 语气词 取汉字“语”的声母。 
    z 状态词 取汉字“状”的声母的前一个字母。

@author: luoyi
Created on 2021年5月11日
'''
#    标注<->id
pos_tag_io = {}
tag_pos_io = {}
pos_tag_bio = {}
tag_pos_bio = {}
pos_tag_bioes = {}
tag_pos_bioes = {}

#    追加一个可迭代的列表进dict
def append_to_io(key_iter):
    global pos_tag_io
    crt_len = len(pos_tag_io)
    pos_tag_io.update({k : i + crt_len for i, k in enumerate(key_iter)})
    pass
def append_to_bio(key_iter):
    global pos_tag_bio
    crt_len = len(pos_tag_bio)
    pos_tag_bio.update({k : i + crt_len for i, k in enumerate(key_iter)})
    pass
def append_to_bioes(key_iter):
    global pos_tag_bioes
    crt_len = len(pos_tag_bioes)
    pos_tag_bioes.update({k : i + crt_len for i, k in enumerate(key_iter)})
    pass


#    追加[PAD] [UNK] [GO] [EOS] [MASK]
append_to_io('[PAD] [UNK] [CLS] [EOS] [MASK]'.split(' '))
append_to_bio('[PAD] [UNK] [CLS] [EOS] [MASK]'.split(' '))
append_to_bioes('[PAD] [UNK] [CLS] [EOS] [MASK]'.split(' '))

all_io = 'ag a ad an b c Dg d e f g h i j k l m Ng n nw nr ns nt nz o p q r s Tg t u Vg v vd vn w x xc y z'

#    追加标注
append_to_io(all_io.split(' '))

bio_tags = []
bioes_tags = []
for k in all_io.split(' '):
    bio_tags.extend(['B-' + k, 'I-' + k])
    bioes_tags.extend(['B-' + k, 'I-' + k, 'E-' + k])
    pass
append_to_bio(bio_tags)
append_to_bioes(bioes_tags)


#    编码 -> 标注
tag_pos_io = {v:k for k,v in pos_tag_io.items()}
tag_pos_bio = {v:k for k,v in pos_tag_bio.items()}
tag_pos_bioes = {v:k for k,v in pos_tag_bioes.items()}


#    io模式
#    词性总数
def io_tag_size():
    return len(pos_tag_io)
def io_tag_id(tag):
    return pos_tag_io[tag]
def io_id_tag(tagid):
    return tag_pos_io[tagid]

#    bio模式
#    词性总数
def bio_tag_size():
    return len(pos_tag_bio)
def bio_tag_id_list(tag_list):
    return [bio_tag_id(tag) for tag in tag_list]
def bio_tag_id(tag):
    return pos_tag_bio[tag]
def bio_sen(sen, pos):
    if (pos_tag_io.get(pos) is None): return None
    pos_sen = ['B-'+pos if (i == 0) else 'I-'+pos for i in range(len(sen))]
    return pos_sen
def bio_id_tag(tagid):
    return tag_pos_bio[tagid]

#    bioes模式
def bioes_tag_size():
    return len(pos_tag_bioes)
def bioes_tag_id_list(tag_list):
    return [bioes_tag_id(tag) for tag in tag_list]
def bioes_tag_id(tag):
    return pos_tag_bioes[tag.lower()]
def bioes_sen(sen, pos):
    if (pos_tag_io.get(pos) is None): return None
    pos_sen = ['B-'+pos if (i == 0) else 'E-'+pos if (i == len(sen)-1) else 'I-'+pos for i in range(len(sen))]
    return pos_sen
def bioes_id_tag(tagid):
    return tag_pos_bioes[tagid]


# #    词性编码集合
# pos_tag_io = {  
#                 '[PAD]':0,       #    <PAD>对应的标注
#                 '[UNK]':1,    #    <UNK>对应的标注
#                 '[GO]':2,        #    <GO>对应的标注
#                 '[EOF]':3,       #    <EOF>对应的标注
#                 '[MASK]':4,     #    [MASK]
#                 
#                 'Ag':4,         #    形语素 形容词性语素。形容词代码为a，语素代码ｇ前面置以A。
#                 'a':5,          #    形容词 取英语形容词adjective的第1个字母。 
#                 'ad':6,         #    副形词 直接作状语的形容词。形容词代码a和副词代码d并在一起。 
#                 'an':7,         #    名形词 具有名词功能的形容词。形容词代码a和名词代码n并在一起。 
#                 
#                 'b':8,          #    区别词 取汉字“别”的声母。 
#                 'c':9,          #    连词 取英语连词conjunction的第1个字母。 
#                 'Dg':10,         #    副语素 副词性语素。副词代码为d，语素代码ｇ前面置以D。 
#                 'd':11,          #    副词 取adverb的第2个字母，因其第1个字母已用于形容词。 
#                 'e':12,          #    叹词 取英语叹词exclamation的第1个字母。 
#                 'f':13,         #    方位词 取汉字“方” 
#                 'g':14,         #    语素 绝大多数语素都能作为合成词的“词根”，取汉字“根”的声母。 
#                 'h':15,         #    前接成分 取英语head的第1个字母。 
#                 'i':16,         #    成语 取英语成语idiom的第1个字母。 
#                 'j':17,         #    简称略语 取汉字“简”的声母。 
#                 'k':18,         #    后接成分 
#                 'l':19,         #    习用语 习用语尚未成为成语，有点“临时性”，取“临”的声母。 
#                 'm':20,         #    数词 取英语numeral的第3个字母，n，u已有他用。 
#                 
#                 'Ng':21,        #    名语素 名词性语素。名词代码为n，语素代码ｇ前面置以N。 
#                 'n':22,         #    名词 取英语名词noun的第1个字母。 
#                 'nr':23,        #    人名 名词代码n和“人(ren)”的声母并在一起。 
#                 'ns':24,        #    地名 名词代码n和处所词代码s并在一起。 
#                 'nt':25,        #    机构团体 “团”的声母为t，名词代码n和t并在一起。 
#                 'nz':26,        #    其他专名 “专”的声母的第1个字母为z，名词代码n和z并在一起。 
#                 
#                 'o':27,         #    拟声词 取英语拟声词onomatopoeia的第1个字母。 
#                 'p':28,         #    介词 取英语介词prepositional的第1个字母。 
#                 'q':29,         #    量词 取英语quantit的第1个字母。 
#                 'r':30,         #    代词 取英语代词pronoun的第2个字母,因p已用于介词。 
#                 's':31,         #    处所词 取英语space的第1个字母。 
#                 'Tg':32,        #    时语素 时间词性语素。时间词代码为t,在语素的代码g前面置以T。 
#                 't':33,         #    时间词 取英语time的第1个字母。 
#                 'u':34,         #    助词 取英语助词auxiliary 
#                 'Vg':35,        #    动语素 动词性语素。动词代码为v。在语素的代码g前面置以V。 
#                 
#                 'v':36,         #    动词 取英语动词verb的第一个字母。 
#                 'vd':37,        #    副动词 直接作状语的动词。动词和副词的代码并在一起。 
#                 'vn':38,        #    名动词 指具有名词功能的动词。动词和名词的代码并在一起。 
#                 
#                 'w':39,         #    标点符号 
#                 'x':40,         #    非语素字 非语素字只是一个符号，字母x通常用于代表未知数、符号。 
#                 'y':41,         #    语气词 取汉字“语”的声母。 
#                 'z':42,         #    状态词 取汉字“状”的声母的前一个字母。
#                 }
# tag_pos_io = {v:k for k,v in pos_tag_io.items()}
# 
# pos_tag_bio = {
#                 '<PAD>':0,       #    <PAD>对应的标注
#                 '<UNK>':1,    #    <UNK>对应的标注
#                 '<GO>':2,        #    <GO>对应的标注
#                 '<EOF>':3,       #    <EOF>对应的标注
#                 
#                 'B-Ag':4,       #    形语素 形容词性语素。形容词代码为a，语素代码ｇ前面置以A。
#                 'I-Ag':5,       #    形语素 形容词性语素。形容词代码为a，语素代码ｇ前面置以A。
#                 
#                 'B-a':6,        #    形容词 取英语形容词adjective的第1个字母。 
#                 'I-a':7,        #    形容词 取英语形容词adjective的第1个字母。 
#                 'B-ad':8,       #    副形词 直接作状语的形容词。形容词代码a和副词代码d并在一起。 
#                 'I-ad':9,       #    副形词 直接作状语的形容词。形容词代码a和副词代码d并在一起。
#                 'B-an':10,       #    名形词 具有名词功能的形容词。形容词代码a和名词代码n并在一起。 
#                 'I-an':11,       #    名形词 具有名词功能的形容词。形容词代码a和名词代码n并在一起。 
#                 
#                 'B-b':12,        #    区别词 取汉字“别”的声母。 
#                 'I-b':13,        #    区别词 取汉字“别”的声母。 
#                 'B-c':14,       #    连词 取英语连词conjunction的第1个字母。 
#                 'I-c':15,       #    连词 取英语连词conjunction的第1个字母。 
#                 'B-Dg':16,      #    副语素 副词性语素。副词代码为d，语素代码ｇ前面置以D。 
#                 'I-Dg':17,      #    副语素 副词性语素。副词代码为d，语素代码ｇ前面置以D。 
#                 'B-d':18,       #    副词 取adverb的第2个字母，因其第1个字母已用于形容词。 
#                 'I-d':19,       #    副词 取adverb的第2个字母，因其第1个字母已用于形容词。 
#                 'B-e':20,       #    叹词 取英语叹词exclamation的第1个字母。 
#                 'I-e':21,       #    叹词 取英语叹词exclamation的第1个字母。 
#                 'B-f':22,       #    方位词 取汉字“方” 
#                 'I-f':23,       #    方位词 取汉字“方” 
#                 'B-g':24,       #    语素 绝大多数语素都能作为合成词的“词根”，取汉字“根”的声母。 
#                 'I-g':25,       #    语素 绝大多数语素都能作为合成词的“词根”，取汉字“根”的声母。 
#                 'B-h':26,       #    前接成分 取英语head的第1个字母。 
#                 'I-h':27,       #    前接成分 取英语head的第1个字母。 
#                 'B-i':28,       #    成语 取英语成语idiom的第1个字母。 
#                 'I-i':29,       #    成语 取英语成语idiom的第1个字母。 
#                 'B-j':30,       #    简称略语 取汉字“简”的声母。 
#                 'I-j':31,       #    简称略语 取汉字“简”的声母。 
#                 'B-k':32,       #    后接成分 
#                 'I-k':33,       #    后接成分 
#                 'B-l':34,       #    习用语 习用语尚未成为成语，有点“临时性”，取“临”的声母。 
#                 'I-l':35,       #    习用语 习用语尚未成为成语，有点“临时性”，取“临”的声母。 
#                 'B-m':36,       #    数词 取英语numeral的第3个字母，n，u已有他用。 
#                 'I-m':37,       #    数词 取英语numeral的第3个字母，n，u已有他用。 
#                 
#                 'B-Ng':38,      #    名语素 名词性语素。名词代码为n，语素代码ｇ前面置以N。 
#                 'I-Ng':39,      #    名语素 名词性语素。名词代码为n，语素代码ｇ前面置以N。 
#                 'B-n':40,       #    名词 取英语名词noun的第1个字母。 
#                 'I-n':41,       #    名词 取英语名词noun的第1个字母。 
#                 'B-nr':42,      #    人名 名词代码n和“人(ren)”的声母并在一起。 
#                 'I-nr':43,      #    人名 名词代码n和“人(ren)”的声母并在一起。 
#                 'B-ns':44,      #    地名 名词代码n和处所词代码s并在一起。 
#                 'I-ns':45,      #    地名 名词代码n和处所词代码s并在一起。 
#                 'B-nt':46,      #    机构团体 “团”的声母为t，名词代码n和t并在一起。 
#                 'I-nt':47,      #    机构团体 “团”的声母为t，名词代码n和t并在一起。 
#                 'B-nz':48,      #    其他专名 “专”的声母的第1个字母为z，名词代码n和z并在一起。 
#                 'I-nz':49,      #    其他专名 “专”的声母的第1个字母为z，名词代码n和z并在一起。 
#                 
#                 'B-o':50,       #    拟声词 取英语拟声词onomatopoeia的第1个字母。 
#                 'I-o':51,       #    拟声词 取英语拟声词onomatopoeia的第1个字母。 
#                 'B-p':52,       #    介词 取英语介词prepositional的第1个字母。 
#                 'I-p':53,       #    介词 取英语介词prepositional的第1个字母。 
#                 'B-q':54,       #    量词 取英语quantit的第1个字母。 
#                 'I-q':55,       #    量词 取英语quantit的第1个字母。 
#                 'B-r':56,       #    代词 取英语代词pronoun的第2个字母,因p已用于介词。 
#                 'I-r':57,       #    代词 取英语代词pronoun的第2个字母,因p已用于介词。 
#                 'B-s':58,       #    处所词 取英语space的第1个字母。 
#                 'I-s':59,       #    处所词 取英语space的第1个字母。 
#                 'B-Tg':60,      #    时语素 时间词性语素。时间词代码为t,在语素的代码g前面置以T。 
#                 'I-Tg':61,      #    时语素 时间词性语素。时间词代码为t,在语素的代码g前面置以T。 
#                 'B-t':62,       #    时间词 取英语time的第1个字母。 
#                 'I-t':63,       #    时间词 取英语time的第1个字母。 
#                 'B-u':64,       #    助词 取英语助词auxiliary 
#                 'I-u':65,       #    助词 取英语助词auxiliary 
#                 
#                 'B-Vg':66,      #    动语素 动词性语素。动词代码为v。在语素的代码g前面置以V。 
#                 'I-Vg':67,      #    动语素 动词性语素。动词代码为v。在语素的代码g前面置以V。 
#                 'B-v':68,       #    动词 取英语动词verb的第一个字母。 
#                 'I-v':69,       #    动词 取英语动词verb的第一个字母。 
#                 'B-vd':70,      #    副动词 直接作状语的动词。动词和副词的代码并在一起。 
#                 'I-vd':71,      #    副动词 直接作状语的动词。动词和副词的代码并在一起。 
#                 'B-vn':72,      #    名动词 指具有名词功能的动词。动词和名词的代码并在一起。 
#                 'I-vn':73,      #    名动词 指具有名词功能的动词。动词和名词的代码并在一起。 
#                 
#                 'B-w':74,       #    标点符号 
#                 'I-w':75,       #    标点符号 
#                 'B-x':76,       #    非语素字 非语素字只是一个符号，字母x通常用于代表未知数、符号。 
#                 'I-x':77,       #    非语素字 非语素字只是一个符号，字母x通常用于代表未知数、符号。 
#                 'B-y':78,       #    语气词 取汉字“语”的声母。 
#                 'I-y':79,       #    语气词 取汉字“语”的声母。 
#                 'B-z':80,       #    状态词 取汉字“状”的声母的前一个字母。
#                 'I-z':81,       #    状态词 取汉字“状”的声母的前一个字母。
#                 }
# tag_pos_bio = {v:k for k,v in pos_tag_bio.items()}
# 
# pos_tag_bioes = {
#                 '<PAD>':0,       #    <PAD>对应的标注
#                 '<UNK>':1,    #    <UNK>对应的标注
#                 '<GO>':2,        #    <GO>对应的标注
#                 '<EOF>':3,       #    <EOF>对应的标注
#     
#                 'B-Ag':4,  #    形语素 形容词性语素。形容词代码为a，语素代码ｇ前面置以A。
#                 'I-Ag':5,  #    形语素 形容词性语素。形容词代码为a，语素代码ｇ前面置以A。
#                 'E-Ag':6,  #    形语素 形容词性语素。形容词代码为a，语素代码ｇ前面置以A。
#                 
#                 'B-a':7,  #    形容词 取英语形容词adjective的第1个字母。 
#                 'I-a':8,  #    形容词 取英语形容词adjective的第1个字母。 
#                 'E-a':9,  #    形容词 取英语形容词adjective的第1个字母。 
#                 'B-ad':10,  #    副形词 直接作状语的形容词。形容词代码a和副词代码d并在一起。 
#                 'I-ad':11,  #    副形词 直接作状语的形容词。形容词代码a和副词代码d并在一起。
#                 'E-ad':12,  #    副形词 直接作状语的形容词。形容词代码a和副词代码d并在一起。
#                 'B-an':13,  #    名形词 具有名词功能的形容词。形容词代码a和名词代码n并在一起。 
#                 'I-an':14,  #    名形词 具有名词功能的形容词。形容词代码a和名词代码n并在一起。 
#                 'E-an':15,  #    名形词 具有名词功能的形容词。形容词代码a和名词代码n并在一起。 
#                 
#                 'B-b':16,  #    区别词 取汉字“别”的声母。 
#                 'I-b':17,  #    区别词 取汉字“别”的声母。 
#                 'E-b':18,  #    区别词 取汉字“别”的声母。 
#                 'B-c':19,  #    连词 取英语连词conjunction的第1个字母。 
#                 'I-c':20,  #    连词 取英语连词conjunction的第1个字母。 
#                 'E-c':21,  #    连词 取英语连词conjunction的第1个字母。 
#                 'B-Dg':22,  #    副语素 副词性语素。副词代码为d，语素代码ｇ前面置以D。 
#                 'I-Dg':23,  #    副语素 副词性语素。副词代码为d，语素代码ｇ前面置以D。 
#                 'E-Dg':24,  #    副语素 副词性语素。副词代码为d，语素代码ｇ前面置以D。 
#                 'B-d':25,  #    副词 取adverb的第2个字母，因其第1个字母已用于形容词。 
#                 'I-d':26,  #    副词 取adverb的第2个字母，因其第1个字母已用于形容词。
#                 'E-d':27,  #    副词 取adverb的第2个字母，因其第1个字母已用于形容词。 
#                 'B-e':28,  #    叹词 取英语叹词exclamation的第1个字母。 
#                 'I-e':29,  #    叹词 取英语叹词exclamation的第1个字母。 
#                 'E-e':30,  #    叹词 取英语叹词exclamation的第1个字母。 
#                 'B-f':31,  #    方位词 取汉字“方” 
#                 'I-f':32,  #    方位词 取汉字“方” 
#                 'E-f':33,  #    方位词 取汉字“方” 
#                 'B-g':34,  #    语素 绝大多数语素都能作为合成词的“词根”，取汉字“根”的声母。 
#                 'I-g':35,  #    语素 绝大多数语素都能作为合成词的“词根”，取汉字“根”的声母。 
#                 'E-g':36,  #    语素 绝大多数语素都能作为合成词的“词根”，取汉字“根”的声母。 
#                 'B-h':37,  #    前接成分 取英语head的第1个字母。 
#                 'I-h':38,  #    前接成分 取英语head的第1个字母。 
#                 'E-h':39,  #    前接成分 取英语head的第1个字母。 
#                 'B-i':40,  #    成语 取英语成语idiom的第1个字母。 
#                 'I-i':41,  #    成语 取英语成语idiom的第1个字母。 
#                 'E-i':42,  #    成语 取英语成语idiom的第1个字母。 
#                 'B-j':43,  #    简称略语 取汉字“简”的声母。 
#                 'I-j':44,  #    简称略语 取汉字“简”的声母。 
#                 'E-j':45,  #    简称略语 取汉字“简”的声母。 
#                 'B-k':46,  #    后接成分 
#                 'I-k':47,  #    后接成分 
#                 'E-k':48,  #    后接成分 
#                 'B-l':49,  #    习用语 习用语尚未成为成语，有点“临时性”，取“临”的声母。 
#                 'I-l':50,  #    习用语 习用语尚未成为成语，有点“临时性”，取“临”的声母。 
#                 'E-l':51,  #    习用语 习用语尚未成为成语，有点“临时性”，取“临”的声母。 
#                 'B-m':52,  #    数词 取英语numeral的第3个字母，n，u已有他用。 
#                 'I-m':53,  #    数词 取英语numeral的第3个字母，n，u已有他用。 
#                 'E-m':54,  #    数词 取英语numeral的第3个字母，n，u已有他用。 
#                 
#                 'B-Ng':55,  #    名语素 名词性语素。名词代码为n，语素代码ｇ前面置以N。 
#                 'I-Ng':56,  #    名语素 名词性语素。名词代码为n，语素代码ｇ前面置以N。 
#                 'E-Ng':57,  #    名语素 名词性语素。名词代码为n，语素代码ｇ前面置以N。 
#                 'B-n':58,  #    名词 取英语名词noun的第1个字母。 
#                 'I-n':59,  #    名词 取英语名词noun的第1个字母。 
#                 'E-n':60,  #    名词 取英语名词noun的第1个字母。 
#                 'B-nr':61,  #    人名 名词代码n和“人(ren)”的声母并在一起。 
#                 'I-nr':62,  #    人名 名词代码n和“人(ren)”的声母并在一起。 
#                 'E-nr':63,  #    人名 名词代码n和“人(ren)”的声母并在一起。 
#                 'B-ns':64,  #    地名 名词代码n和处所词代码s并在一起。 
#                 'I-ns':65,  #    地名 名词代码n和处所词代码s并在一起。 
#                 'E-ns':66,  #    地名 名词代码n和处所词代码s并在一起。 
#                 'B-nt':67,  #    机构团体 “团”的声母为t，名词代码n和t并在一起。 
#                 'I-nt':68,  #    机构团体 “团”的声母为t，名词代码n和t并在一起。 
#                 'E-nt':69,  #    机构团体 “团”的声母为t，名词代码n和t并在一起。 
#                 'B-nz':70,  #    其他专名 “专”的声母的第1个字母为z，名词代码n和z并在一起。 
#                 'I-nz':71,  #    其他专名 “专”的声母的第1个字母为z，名词代码n和z并在一起。 
#                 'E-nz':72,  #    其他专名 “专”的声母的第1个字母为z，名词代码n和z并在一起。 
#                 
#                 'B-o':73,  #    拟声词 取英语拟声词onomatopoeia的第1个字母。 
#                 'I-o':74,  #    拟声词 取英语拟声词onomatopoeia的第1个字母。 
#                 'E-o':75,  #    拟声词 取英语拟声词onomatopoeia的第1个字母。 
#                 'B-p':76,  #    介词 取英语介词prepositional的第1个字母。 
#                 'I-p':77,  #    介词 取英语介词prepositional的第1个字母。 
#                 'E-p':78,  #    介词 取英语介词prepositional的第1个字母。 
#                 'B-q':79,  #    量词 取英语quantit的第1个字母。 
#                 'I-q':80,  #    量词 取英语quantit的第1个字母。 
#                 'E-q':81,  #    量词 取英语quantit的第1个字母。 
#                 'B-r':82,  #    代词 取英语代词pronoun的第2个字母,因p已用于介词。 
#                 'I-r':83,  #    代词 取英语代词pronoun的第2个字母,因p已用于介词。 
#                 'E-r':84,  #    代词 取英语代词pronoun的第2个字母,因p已用于介词。 
#                 'B-s':85,  #    处所词 取英语space的第1个字母。 
#                 'I-s':86,  #    处所词 取英语space的第1个字母。 
#                 'E-s':87,  #    处所词 取英语space的第1个字母。 
#                 'B-Tg':88,  #    时语素 时间词性语素。时间词代码为t,在语素的代码g前面置以T。 
#                 'I-Tg':89,  #    时语素 时间词性语素。时间词代码为t,在语素的代码g前面置以T。 
#                 'E-Tg':90,  #    时语素 时间词性语素。时间词代码为t,在语素的代码g前面置以T。 
#                 'B-t':91,  #    时间词 取英语time的第1个字母。 
#                 'I-t':92,  #    时间词 取英语time的第1个字母。 
#                 'E-t':93,  #    时间词 取英语time的第1个字母。 
#                 'B-u':94,  #    助词 取英语助词auxiliary 
#                 'I-u':95,  #    助词 取英语助词auxiliary 
#                 'E-u':96,  #    助词 取英语助词auxiliary 
#                 
#                 'B-Vg':97,  #    动语素 动词性语素。动词代码为v。在语素的代码g前面置以V。 
#                 'I-Vg':98,  #    动语素 动词性语素。动词代码为v。在语素的代码g前面置以V。 
#                 'E-Vg':99,  #    动语素 动词性语素。动词代码为v。在语素的代码g前面置以V。 
#                 'B-v':100,  #    动词 取英语动词verb的第一个字母。 
#                 'I-v':101,  #    动词 取英语动词verb的第一个字母。 
#                 'E-v':102,  #    动词 取英语动词verb的第一个字母。 
#                 'B-vd':103,  #    副动词 直接作状语的动词。动词和副词的代码并在一起。 
#                 'I-vd':104,  #    副动词 直接作状语的动词。动词和副词的代码并在一起。 
#                 'E-vd':105,  #    副动词 直接作状语的动词。动词和副词的代码并在一起。 
#                 'B-vn':106,  #    名动词 指具有名词功能的动词。动词和名词的代码并在一起。 
#                 'I-vn':107,  #    名动词 指具有名词功能的动词。动词和名词的代码并在一起。 
#                 'E-vn':108,  #    名动词 指具有名词功能的动词。动词和名词的代码并在一起。 
#                 
#                 'B-w':109,  #    标点符号 
#                 'I-w':110,  #    标点符号 
#                 'E-w':111,  #    标点符号 
#                 'B-x':112,  #    非语素字 非语素字只是一个符号，字母x通常用于代表未知数、符号。 
#                 'I-x':113,  #    非语素字 非语素字只是一个符号，字母x通常用于代表未知数、符号。 
#                 'E-x':114,  #    非语素字 非语素字只是一个符号，字母x通常用于代表未知数、符号。 
#                 'B-y':115,  #    语气词 取汉字“语”的声母。 
#                 'I-y':116,  #    语气词 取汉字“语”的声母。 
#                 'E-y':117,  #    语气词 取汉字“语”的声母。 
#                 'B-z':118,  #    状态词 取汉字“状”的声母的前一个字母。
#                 'I-z':119,  #    状态词 取汉字“状”的声母的前一个字母。
#                 'E-z':120,  #    状态词 取汉字“状”的声母的前一个字母。
#                 }
# tag_pos_bioes = {v:k for k,v in pos_tag_bioes.items()}


#    表示句子结束的标点符号
def is_terminator(word):
    return word == '.' or word == '!' or word == '?'\
            or word == '。' or word == '！' or word == '？'
    pass



